package com.spring.self.tag.imports;


import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


/**
 * import 属性：
 * 用于将多个XML配置文件组合成一个整体配置
 * 路径可以是相对路径或绝对路径
 * 按照导入顺序加载，后面的配置可以覆盖前面的同名Bean定义
 *
 * 容器加载过程：
 * ClassPathXmlApplicationContext 会自动处理所有import的配置文件
 * 所有配置文件中的Bean定义会被合并到一个上下文中
 */
public class ImportTagApplication {
    public static void main(String[] args) {
        // 1. 加载Spring配置文件（会自动处理import）
        ApplicationContext context = new ClassPathXmlApplicationContext("tag/imports/applicationContext.xml");
        
        // 2. 获取配置文件中定义的所有Bean
        System.out.println("===== 获取所有Bean =====");
        String[] beanNames = context.getBeanDefinitionNames();
        for (String beanName : beanNames) {
            System.out.println("Bean Name: " + beanName + ", Type: " + 
                             context.getBean(beanName).getClass().getName());
        }
    }
}